home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
ici
/
ici.cpi
/
smash.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-10-27
|
866b
|
42 lines
#include "fwd.h"
/*
* Return an argv style array of pointers to each of the elemnts of
* str where each element is delimited by delim. The return'ed array has
* been malloced and may be free'd with a single free.
*/
char **
smash(str, delim)
register char *str;
register int delim;
{
register char *p;
register int i;
register char **ptrs;
extern char *strchr();
int n;
i = 0;
for (p = str; (p = strchr(p, delim)) != NULL; p++)
i++;
/*
* XENIX compiler bug workaround:
*/
n = strlen(str);
n += (i + 2) * sizeof(char *) + 1;
if ((ptrs = (char **)zalloc(n)) == NULL)
return NULL;
p = (char *)ptrs + (i + 2) * sizeof(char *);
strcpy(p, str);
ptrs[0] = p;
i = 1;
while ((p = strchr(p, delim)) != NULL)
{
*p++ = '\0';
ptrs[i++] = p;
}
ptrs[i] = NULL;
return ptrs;
}